﻿using BMS.DTO;
using BMS.Entity.Dictionary;
using BMS.Entity.RBAC;
using BMS.IService;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BMS.IService
{
    public interface IRoleService : IBaseService<RoleInfo>
    {
        /// <summary>
        /// 添加角色信息
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public Task<ResultDTO<RoleReturnDTO>> RoleAdd(RoleAddRequestDTO dto);


        /// <summary> 
        /// 修改角色信息
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public Task<ResultDTO<RoleReturnDTO>> RoleUpdate(RoleUpdateRequestDTO dto);

        /// <summary>
        /// 角色的分页显示+查询
        /// </summary>
        /// <param name="pageSize"></param>
        /// <param name="pageIndex"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public Task<ResultDTO<PageDTO<Role_PageDTO>>> RolePageShow(int pageSize, int pageIndex, string name);

        /// <summary>
        /// 单个角色的详细显示
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Task<ResultDTO<RoleInfoDTO>> RoleSelectById(int id);

        /// <summary>
        /// 单个角色的真删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Task<ResultDTO<string>> RoleDel(RoleDelDTO dto);

        /// <summary>
        /// 角色的批量真删除
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public Task<ResultDTO<string>> RoleDelAll(string idList);

        /// <summary>
        /// 单个角色的逻辑删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Task<ResultDTO<string>> RoleSoftDel(int id);

        /// <summary>
        /// 角色的批量逻辑删除
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public Task<ResultDTO<string>> RoleSoftDelAll(string idList);

        /// <summary>
        /// 角色分配权限
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public Task<ResultDTO<string>> RolePermissionAllot(PermissionAllotDTO dto);


    }
}
